package com.aaa.generics.demo03;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author C-Q
 * @version 1.1.0
 * @Description: 泛型通配符
 * @date 2022/10/25
 * 在开发中对象的引用传递是最常见的，但是在泛型的操作中，在进行引用传递时泛型类型必须匹配才可以传递，否则无法传递；
 */
    public class Test01 {
        public static void main(String[] args) {
            //在主函数中创建wildcard对象
            WildCard<Integer> wildCard= new WildCard<>();
            wildCard.setVar(888);
            fan(wildCard);

            WildCard<String> wildCard1 = new WildCard<>();
            wildCard1.setVar("字符串");
            fan(wildCard1);
            //如果传递的引用类型为泛型，那么要求泛型也有匹配参数类型；
        }
        /**
         * 该方法要传递一个wildcard对象，而且他的泛型必须为integer类型
         * 如果以下方法可以接收任意类型的泛型则可以加上通配符 ？
         */
        public static void fan(WildCard<?> wildCard){
            wildCard.show();
        }
    }

    //泛型类
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    class WildCard<T>{
        public T var ;
        public void show(){
            System.out.println(var+"=====var");
        }
    }
